통합 개발 환경
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.
1. 개요
통합 개발 환경(IDE)은 소프트웨어 개발을 위한 응용 프로그램으로, 코드 편집, 빌드 자동화, 디버깅, 버전 관리, 리팩토링, 코드 검색, GUI 개발 지원, 팀 개발 지원, 모듈 관리 등의 기능을 통합적으로 제공한다. 초기에는 콘솔 환경에서 시작되었지만, GUI의 발전과 함께 그래픽 기반 IDE가 대중화되었다. 다양한 프로그래밍 언어를 지원하며, 이클립스, 비주얼 스튜디오, IntelliJ IDEA, 엑스코드 등이 주요 IDE로 사용된다. 또한, 온라인 IDE도 존재하여 웹 브라우저에서 접근하여 사용할 수 있다. 유닉스, 윈도우, macOS 등 다양한 플랫폼에서 활용되며, 게임 개발 환경에서도 특정 콘솔 제조사에서 제공하는 독자적인 개발 환경 또는 유니티나 언리얼 엔진과 같은 멀티플랫폼 미들웨어가 사용된다.
더 읽어볼만한 페이지
- 통합 개발 환경 - 터보 파스칼
필립 칸이 개발하고 안데르스 헤일스베르그가 기반을 다진 터보 파스칼은 저렴한 가격, 빠른 컴파일, 사용하기 쉬운 IDE를 특징으로 1980년대 PC 프로그래밍에 혁신을 가져왔으며, 여러 기능 추가를 거쳐 델파이 등장 후 레거시 기술이 되었고 일부 버전은 프리웨어로 배포된다. - 통합 개발 환경 - IntelliJ IDEA
IntelliJ IDEA는 JetBrains에서 개발한 자바 통합 개발 환경(IDE)으로, 코드 탐색 및 리팩토링 기능으로 주목받았으며, 다양한 개발 환경의 기반이 되었고, Java, Scala, Kotlin 등을 지원한다. - 소프트웨어 공학 - 소프트웨어 개발
소프트웨어 개발은 요구사항 분석, 설계, 코딩, 테스트, 배포, 유지보수를 포함하는 컴퓨터 프로그램 및 관련 데이터를 만드는 과정으로, 다양한 방법론과 도구가 사용되며, 개발자 외에도 다양한 전문가들이 참여한다. - 소프트웨어 공학 - 브룩스의 법칙
브룩스의 법칙은 소프트웨어 개발 프로젝트 후반에 인력을 추가하면 프로젝트가 지연된다는 법칙으로, 지연된 프로젝트에 인력을 추가하는 것이 단기적으로 팀 생산성을 저하시키고 커뮤니케이션 비용을 증가시키기 때문에 발생한다.
통합 개발 환경 | |
---|---|
지도 정보 | |
기본 정보 | |
개발 환경 | |
구성 요소 | 소스 코드 편집기 컴파일러 또는 인터프리터 빌드 자동화 도구 디버거 |
기능 | 소스 코드 편집 컴파일 및 빌드 디버깅 버전 관리 테스트 |
장점 | 개발 생산성 향상 코드 품질 향상 협업 용이 개발 프로세스 간소화 |
종류 | |
주요 IDE | Eclipse Visual Studio IntelliJ IDEA NetBeans Xcode Android Studio |
언어 지원 | C C++ Java C 샤프 Python JavaScript PHP Ruby Go Kotlin Swift 기타 다양한 언어 지원 |
플랫폼 지원 | Windows macOS Linux 기타 다양한 운영 체제 지원 |
특징 | 다양한 플러그인 및 확장 기능 지원 코드 자동 완성 기능 코드 리팩토링 기능 형상 관리 기능 (git) UI 디자인 기능 (일부 IDE) |
기타 | |
빌드 자동화 도구 연동 | Maven Gradle Ant 기타 빌드 자동화 도구 |
버전 관리 시스템 연동 | Git Subversion Mercurial 기타 버전 관리 시스템 |
소프트웨어 테스트 도구 연동 | JUnit TestNG 기타 테스트 도구 |
2. 역사
콘솔이나 터미널을 통해 개발이 가능해지면서 IDE가 등장했다. 초기 시스템들은 천공 카드나 종이 테이프 등으로 프로그램을 입력하고 컴파일러에 제출하는 방식이었기 때문에 IDE를 지원하지 못했다. 다트머스 베이직은 IDE와 통합된 최초의 언어로 간주된다. 이 IDE는 명령어 기반이었기 때문에 그래픽 사용자 인터페이스(GUI)의 출현 이후에 대중화된 메뉴 구동식의 그래피컬한 IDE와는 달랐다. 그러나 편집, 파일 관리, 컴파일, 디버그, 실행 기능을 통합하여 제공하였다.[23]
통합 개발 환경(IDE)은 소프트웨어 개발 효율성을 높이기 위해 다양한 기능을 제공한다.
마에스테로 I은 Softlab Munich의 제품으로, 세계 최초의 소프트웨어 통합 개발 환경이었다. 마에스테로 I은 전 세계 22,000명의 프로그래머들이 설치, 사용했다. 1989년까지 서독 연방 공화국에 6,000개가 설치되었다.
플러그인 개념을 도입한 최초의 IDE들 가운데 하나는 소프트벤치이다.
2015년 3월 기준으로 가장 대중적인 IDE로는 이클립스, 비주얼 스튜디오, IntelliJ가 있다.[24] 2023년 8월 기준으로 구글 검색에서 가장 많이 검색된 IDE는 비주얼 스튜디오, 비주얼 스튜디오 코드, 이클립스였다.[2]
3. 주요 기능
IDE는 특정 프로그래밍 언어에 특화되어 해당 언어의 프로그래밍 패러다임에 맞는 기능을 제공하기도 하고, 여러 언어를 지원하는 다중 언어 IDE도 있다. 최신 IDE는 대부분 그래픽 기반이지만, Microsoft Windows나 X 윈도우 시스템(X11) 같은 윈도잉 시스템 이전에는 터보 파스칼처럼 텍스트 기반 IDE가 널리 쓰였다. 텍스트 기반 IDE는 기능 키나 단축키를 사용하여 명령을 실행한다.
IDE는 다음과 같은 주요 기능을 제공한다.3. 1. 코드 편집
통합 개발 환경(IDE)의 코드 편집기는 프로그래밍에 특화되어 있다. 각 언어의 키워드(예약어)를 강조(색상 구분)하거나, 프로젝트 내의 소스 파일 및 헤더 파일에서 추출한 분석된 심볼 정보 데이터베이스를 기반으로 사용자 정의 데이터 형식이나 변수, 서브루틴(함수/메서드)의 이름(식별자)을 자동 완성하는 기능을 제공한다. 이를 통해 소스 코드 작성 효율이 향상되고 코딩 실수를 방지하는 데 도움이 된다.[21]
일반적으로 구문 강조 기능을 제공하며, 구조, 언어 키워드, 구문 오류를 시각적으로 구분되는 색상과 글꼴 효과로 표시할 수 있다.[3] 코드 완성은 프로그래밍 속도를 높이기 위한 중요한 IDE 기능이며, 최신 IDE는 스마트 코드 완성 기능까지 제공한다.
일부 IDE에서는 실제로 컴파일하지 않고도 실시간으로 소스 코드를 분석하여 구문 오류나 경고를 감지하고, 해당 부분에 밑줄을 긋는 방식으로 프로그래머에게 알려준다. 또한, 소스 코드 주석 앞에 "TODO"와 같은 특정 문자열을 입력하면 IDE에서 이를 목록으로 표시하여 확인할 수 있다.[21]
3. 2. 빌드 자동화
IDE는 소스 코드를 컴파일하고 링크하여 실행 가능한 프로그램으로 만드는 빌드 과정을 자동화하는 기능을 제공한다.
하나의 소프트웨어를 만들기 위해서는 프로그래밍 언어의 소스 코드 파일, 아이콘 이미지나 현지화된 텍스트 등의 리소스 파일, 그리고 빌드 설정 관리 파일 등 여러 파일이 필요하다.[18] 자동화된 빌드 시스템에서는 이러한 파일들을 통틀어 "프로젝트"로 취급하여 일괄적으로 관리한다. IDE에서는 빌드 시스템의 프로젝트 파일을 직접 편집하지 않고도 시각적이고 직관적으로 조작 및 관리할 수 있도록 돕는다.[18]
복잡한 소프트웨어에서는 재사용성 및 유지보수성 등을 고려하여 프로그램을 기능별로 분류된 부품(모듈)으로 분할하여 관리한다. 일반적인 빌드 시스템에서는 모듈별로 프로젝트 파일을 생성하고, 여러 프로젝트 파일과 그들의 종속 관계를 통합 관리할 수 있는 "워크스페이스 파일"을 지원한다.[18] IDE에서는 이러한 세부 사양을 의식하지 않고도 직관적으로 모듈을 관리할 수 있으며, 프로젝트를 새로 생성할 때도 마법사의 안내에 따라 파일 일체를 간단하게 자동 생성할 수 있다.
3. 3. 디버깅
IDE는 디버거와 연동되어 소스 코드에 시각적인 중단점을 설정하여 소프트웨어의 동작을 일시 중지하거나, 변수의 내용을 확인하면서 소스 코드를 한 줄씩 단계 실행하여 문제가 있는 부분을 찾는 등의 작업을 직관적으로 수행할 수 있게 한다.[24] 코드는 편집 중에 지속적으로 구문 분석될 수 있으므로 구문 오류가 발생할 때 즉각적인 피드백을 제공하여 개발자가 IDE를 사용하여 코드를 훨씬 빠르고 쉽게 디버깅할 수 있다.
3. 4. 버전 관리
통합 개발 환경(IDE)은 버전 관리 기능을 통합하여 제공한다.[3] 소프트웨어 개발에서는 소스 코드 관리를 위해 CVS, 서브버전, 깃과 같은 버전 관리 시스템을 자주 사용한다. 많은 IDE는 체크아웃, 커밋, 리버트(버전 되돌리기) 등 버전 관리 시스템에 대한 조작을 간편하게 실행할 수 있도록 지원한다.
3. 5. 리팩토링
리팩토링은 프로그램의 외부 동작을 변경하지 않으면서 내부 구조를 개선하는 작업이다. 자동화된 리팩토링 도구를 통해 코드의 가독성과 유지보수성을 높일 수 있다. 변수나 함수 이름 변경, 메서드 추출, 클래스 이동 등 다양한 리팩토링 기능을 제공한다.
3. 6. 코드 검색
코드 검색은 두 가지 다른 의미를 가질 수 있다. 첫째, 클래스 및 함수 선언, 사용, 변수 및 필드 읽기/쓰기 등을 검색하는 것을 의미한다. IDE은 코드 검색을 위해 다양한 종류의 사용자 인터페이스를 사용할 수 있다. 예를 들어, 폼 기반 위젯[5]과 자연어 기반 인터페이스가 있다. 둘째, 특정 기능의 구현을 검색하는 것을 의미한다.[6]
3. 7. GUI 개발 지원
그래픽 사용자 인터페이스(GUI)를 갖춘 소프트웨어를 개발할 때, 각 위젯(부품)의 위치나 크기 등 속성 정보는 보통 전용 레이아웃 설정 파일을 사용하여 기술한다. 레이아웃 설정 파일은 XML 형식 또는 고유한 계층 구조 텍스트 형식을 사용하지만, 텍스트 편집기로 GUI 정의를 기술하는 것은 번거롭다. 또한, 프로그램을 빌드하고 실행해야만 화면 표시 결과를 확인할 수 있어 직관적이지 않고 효율도 떨어진다.
따라서 많은 IDE는 GUI 생성을 IDE 상에서 시각적이고 직관적으로 수행할 수 있도록 WYSIWYG를 지원하는 그래픽적인 비주얼 에디터를 통합하고 있다. 위젯 조작 시 발생하는 이벤트에 대한 처리(이벤트 핸들러) 코드도 코드 에디터와 연동·동기화할 수 있다. 이를 통해 GUI를 갖춘 소프트웨어를 쉽게 개발하고, 관리를 일괄적으로 수행할 수 있다. 일부 IDE는 GUI 생성 소프트웨어를 분리하기도 한다.
3. 8. 팀 개발 지원
일부 IDE는 코드 서식 규칙을 프로젝트 단위 또는 소스 트리 단위로 관리할 수 있다.[20] 팀 개발 시, 각 개발자가 동일한 IDE와 동일한 규칙 설정 파일을 사용함으로써 코딩 스타일의 통일을 용이하게 할 수 있다.
작업 관리 도구나 테스트 케이스 관리 도구 등과 연동하여 소프트웨어 개발 프로젝트의 진행 관리를 포함한 종합적인 팀 개발을 지원하는 엔터프라이즈급 기능을 갖춘 IDE도 있다.
3. 9. 모듈 관리
대규모 소프트웨어 개발 시, 프로그램을 기능별 모듈로 분할하여 관리하면 재사용성 및 유지보수성을 높일 수 있다. 일반적인 빌드 시스템에서는 모듈별로 프로젝트 파일을 생성하고, 여러 프로젝트 파일과 그들의 종속 관계를 통합 관리할 수 있는 "워크스페이스 파일"을 지원한다.[18] 프로젝트 파일이나 워크스페이스 파일은 개별 빌드 시스템에 따라 파일 형식이나 확장자가 다르다.[19] Gradle과 같이 파일 시스템 상에 빌드 스크립트가 위치한 디렉토리 구조 자체를 프로젝트나 워크스페이스로 취급하는 빌드 시스템도 있지만, 통합 개발 환경(IDE)에서는 그러한 세부 사양을 의식하지 않고도 직관적으로 모듈을 관리할 수 있으며, 프로젝트를 새로 생성할 때도 마법사의 안내에 따라 파일 일체를 간단하게 자동 생성할 수 있다.
4. 언어 지원
IDE는 특정 프로그래밍 언어에 특화된 기능을 제공하거나, 플러그인을 통해 다양한 언어를 지원할 수 있다. 이클립스, 비주얼 스튜디오, IntelliJ IDEA 등은 여러 프로그래밍 언어를 지원하는 대표적인 IDE이다.[24]
이클립스와 넷빈즈는 C/C++, Ada, GNAT(예: AdaGIDE), 펄, 파이썬, 루비 및 PHP에 대한 플러그인을 가지고 있으며, 파일 확장자, 환경 또는 프로젝트 설정에 따라 자동으로 선택된다. GNU 이맥스 24용 최신 실시간 구문 검사 확장 기능인 플라이체크는 39개 언어를 지원한다.[7] 88개 언어를 지원하는 클라우드 기반 온라인 IDE인 JDoodle도 있다.[https://www.jdoodle.com/docs/jdoodle-apis/programming-languages-and-versions]
통합 개발 환경은 다양한 언어로 구현될 수 있는데, 예를 들면 다음과 같다.
5. 종류
IDE는 초기에는 콘솔이나 터미널을 통해 개발이 가능했다. 초기 시스템들은 천공 카드(또는 종이 테이프 등)로 프로그램을 입력한 후 컴파일러에 제출하는 방식이었기 때문에 IDE를 지원하지 못했다. 다트마우스 베이직은 IDE와 통합된 최초의 언어로, 편집, 파일 관리, 컴파일, 디버그, 실행 기능을 통합하였다.
마에스테로 I은 Softlab Munich의 제품으로, 소프트웨어를 위한 세계 최초의 통합 개발 환경이었다.[23] 플러그인 개념을 도입한 최초의 IDE들 가운데 하나는 소프트벤치이다.
2015년 3월 기준으로 가장 대중적인 IDE로는 이클립스와 비주얼 스튜디오, IntelliJ가 있다.[24]
다양한 IDE들이 여러 플랫폼과 프로그래밍 언어를 지원한다.
소프트웨어 | 개발사 | 플랫폼 | 운영 체제 | 언어 | 라이선스 |
---|---|---|---|---|---|
이클립스 (Eclipse) | IBM, 이클립스 재단 | 크로스 플랫폼(자바) | 윈도우, 리눅스, 솔라리스, AIX, 맥 OS X | 자바, C, C++, PHP, JSP | 이클립스 공중 허가 |
라자루스 (Lazarus) | Lazarus team | 크로스 플랫폼 | 리눅스 배포판, FreeBSD, 맥 OS X, 윈도우 | 프리 파스칼, 파스칼 SDK | GPL, GNU LGPL, 기타 |
안주타 (Anjuta) | GNOME 프로젝트 | 리눅스 | C, C++ | ||
와이드 스튜디오 (Wide Studio) | 와이드 스튜디오 프로젝트 | 리눅스 | C, C++ | ||
코드블럭스 (Code::Blocks) | C, C++ | ||||
Dev-C++ | Bloodshed Software | C, C++ | GPL GNU 일반 공중 사용 허가서 | ||
비주얼 스튜디오 (Visual Studio) | 마이크로소프트 | Win32, win64 | 윈도우 시리즈, macOS | 비주얼 베이직, 비주얼 베이직 닷넷, 비주얼 C++, 비주얼 C 샤프, F 샤프 | 상용 |
코드기어 디벨로퍼 스튜디오 (Codegear Developer Studio) | 코드기어 | Win32 | 윈도우 | 델파이, 오브젝트 파스칼, C++빌더 | 상용 |
델파이 (Delphi) | 엠바카데로 테크놀러지 | Win32 | 윈도우, 안드로이드, macOS | 오브젝트 파스칼 | 상용 라이선스 |
C++빌더 (C++ Builder) | 엠바카데로 테크놀러지 | Win32 | 윈도우 | C, C++ | 상용 라이선스 |
제이빌더 (J Builder) | 엠바카데로 테크놀러지스 | Win32 | 윈도우 | JAVA | |
JDE | |||||
카일릭스 (Kylix) | 지원 중단됨 | ||||
터보 C (Turbo C) | 코드기어 | 도스 | MS-DOS | C, C++ | |
볼랜드 C++ 빌더 (Boland C++ Builder) | 코드기어 | 도스 | MS-DOS | C, C++ | |
터보 파스칼 (Turbo Pascal) | 코드기어 | 도스 | MS-DOS | 파스칼 | |
넷빈즈 (NetBeans) | 썬 마이크로시스템즈, 넷빈즈 재단 | 크로스 플랫폼 | |||
제이디벨로퍼 (JDeveloper) | 오라클 | JVM | 자바, XML, SQL PL/SQL, HTML, 자바스크립트, BPEL, PHP | 사유, 자유 | |
리얼베이직 (Real Basic) | 리얼 소프트웨어 | 크로스 플랫폼 | 맥 OS X, 마이크로소프트 윈도우, 리눅스 | 객체 지향 베이직 | 사유, 자유 |
엑스코드 (Xcode) | 애플 | 아이폰, 매킨토시 | 맥 OS X v10.3 (버전 1.x), | C, C++, 오브젝티브-C, 오브젝티브-C++, 자바, 애플스크립트, 코코아, Carbon, GNU 파스칼, 프리 파스칼, 에이다, C#, 펄, D, Swift | 혼합된 사유재산, 소프트웨어는 카피레프트 |
코드워리어 | 크로스 플랫폼 | ||||
퓨처베이직 | |||||
파워 빌더 (Power Builder) | |||||
오토잇 | |||||
카일릭스 | 크로스 플랫폼 | ||||
프리 파스칼 | 프리 파스칼 팀 | Win32 | 도스.윈도우 | 프리 파스칼 | |
델파이 포 PHP | |||||
IntelliJ IDEA | 젯브레인즈 | 윈도, macOS, 리눅스 | 자바, 코틀린, 그루비, 스칼라 | ||
터보 파스칼 | 코드기어 | MS-DOS | 파스칼 | ||
터보 델파이 | 코드기어 | MS-DOS | 오브젝트 파스칼 | 학생, 아마추어, 전문가, 취미로 즐기는 프로그래머 대상 | |
코드라이트 | Eran Ifrah 외 | 크로스 플랫폼 | 윈도우 XP SP3, 윈도우 비스타, 우분투 9.10, 맥 OS X 10.5.6 | C/C++ | GPLv2 |
PhpStorm | PHP |
5. 1. 주요 IDE
(Eclipse)(Visual Studio)
(Xcode)
(Android Studio)
(NetBeans)
(Code::Blocks)
(Codegear Developer Studio)
(Delphi)
(C++ Builder)
(J Builder)
(Turbo C)
(Boland C++ Builder)
(Turbo Pascal)
(JDeveloper)
(Power Builder)